home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / docs / lists / NAM1297.lha / NAM1297 / LON.LHA / LON.rexx.opt < prev   
Text File  |  1996-01-26  |  8KB  |  5 lines

  1. /* L(ast)ON $VER:1.9
  2. ** (c) 26-Jan-1996 Jostein Trondal. See readme-file for more info.
  3. ** Optimized by RexxOpt 1.8 © 1993-96 by PROXITY SOFTWORKS.
  4. */
  5. ;r=0;s=0;f=0;i=0;onlydots=0;thismonth=0;entrys=0;sortmode=0;width=20;notime=0;ARG line;DO n=1 TO WORDS(line);par.n=WORD(line,n);END;DO n=1 TO 7;IF (UPPER(par.n)='P'|UPPER(par.n)='PHONE') THEN;DO;pread=1;r=1;END;IF (UPPER(par.n)='L'|UPPER(par.n)='LOG') THEN;DO;pread=0;r=1;END;IF (UPPER(par.n)='U'|UPPER(par.n)='UPSORT') THEN;DO;sortmode=1;s=1;END;IF (UPPER(par.n)='D'|UPPER(par.n)='DOWNSORT') THEN;DO;sortmode=2;s=1;END;IF (UPPER(par.n)='A'|UPPER(par.n)='ALPHASORT') THEN;DO;sortmode=3;s=1;END;IF (UPPER(par.n)='-O'|UPPER(par.n)='-ONLYDOTS') THEN;DO;onlydots=1;END;IF (UPPER(par.n)='-T'|UPPER(par.n)='-THISMONTH') THEN;DO;thismonth=1;END;IF (UPPER(par.n)='-N'|UPPER(par.n)='-NOTIME') THEN;DO;notime=1;END;IF LEFT(UPPER(par.n),2,1)='-W' THEN width= DELSTR(par.n,1,2);IF LEFT(UPPER(par.n),2,1)='-L' THEN;DO;infile= DELSTR(par.n,1,2);pread=0;r=1;i=1;END;IF LEFT(UPPER(par.n),2,1)='-F' THEN;DO;outfile= DELSTR(par.n,1,2);f=1;END;END;IF ~r THEN;DO;SAY "›32mLON v1.9   ›31m(c) 26-Jan-1996 Jostein Trondal   ›33;1mFreeware›0m";SAY "Usage: Rx LON <P=Phone|[L=Log|-L<LogFile>]> [-T=ThisMonth] [-O=OnlyDots]";SAY "              [U=UpSort|D=DownSort|A=AlphaSort] [-F<OutputFile>]";SAY "              [-Wnn=NameWidth] [-N=NoTime]";SAY "";EXIT;END;cd.1.wrd='Jan';cd.1.num='01';cd.2.wrd='Feb';cd.2.num='02';cd.3.wrd='Mar';cd.3.num='03';cd.4.wrd='Apr';cd.4.num='04';cd.5.wrd='May';cd.5.num='05';cd.6.wrd='Jun';cd.6.num='06';cd.7.wrd='Jul';cd.7.num='07';cd.8.wrd='Aug';cd.8.num='08';cd.9.wrd='Sep';cd.9.num='09';cd.10.wrd='Oct';cd.10.num='10';cd.11.wrd='Nov';cd.11.num='11';cd.12.wrd='Dec';cd.12.num='12';IF f THEN;DO;IF ~OPEN(out,outfile,'w') THEN;DO;SAY 'Unable to open "'outfile'"';EXIT;END;ELSE OPEN(out,outfile,'w');END;IF pread THEN;DO;filename='NComm:Ncomm.phone';IF OPEN(log,filename,'r') THEN;DO;cal.1=2678400;cal.2=2419200;cal.3=2678400;cal.4=2592000;cal.5=2678400;cal.6=2592000;cal.7=2678400;cal.8=2678400;cal.9=2592000;cal.10=2678400;cal.11=2592000;cal.12=2678400;CALL SEEK(log,1,'c');DO FOREVER;year=1970;months=1;days=1;hours=0;mins=0;secs=0;bufname=READCH(log,41);IF EOF(log) THEN LEAVE;bufnr=READCH(log,61);CALL SEEK(log,-61,'c');skipthis=0;IF onlydots THEN;DO;skipthis=1;CALL SEEK(log,61,'c');testdot=READCH(log,1);IF testdot='.' THEN;DO;skipthis=0;CALL SEEK(log,-62,'c');END;ELSE CALL SEEK(log,239,'c');END;IF ~skipthis then;DO;CALL SEEK(log,239,'c');bufdate=READCH(log,4);re=C2X(bufdate);rest=X2D(re);IF rest>757382399 THEN rest=rest-757382400;year=1994;IF rest>0 THEN;DO;entrys=entrys+1;list.entrys.bbsname=LEFT(bufname,INDEX(bufname,'00'x)-1);list.entrys.bbsnr=LEFT(bufnr,INDEX(bufnr,'00'x)-1);rest=rest-21600;DO FOREVER;leap=0;IF year//4=0 THEN leap=1;IF year//400=0 THEN leap=0;IF leap THEN;DO;IF rest>=31622400 THEN rest=rest-31622400;IF rest<31622400 THEN LEAVE;END;IF ~leap THEN;DO;IF rest>=31536000 THEN rest=rest-31536000;IF rest<31536000 THEN LEAVE;END;year=year+1;END;year=year+1;leap=0;IF year//4=0 THEN leap=1;IF year//400=0 THEN leap=0;IF leap THEN cal.2=2505600;IF ~leap THEN IF rest>15638399 THEN;DO;rest=rest-15638400;months=months+6;END;ELSE IF rest>15724799 THEN;DO;rest=rest-15724800;months=months+6;END;IF rest>=cal.1 THEN;DO FOREVER;IF rest>=cal.months THEN;DO;rest=rest-cal.months;months=months+1;END;IF rest<cal.months THEN LEAVE;END;IF rest>86399 THEN;DO FOREVER;IF rest>86399 THEN;DO;rest=rest-86400;days= days+1;END;IF rest<86400 THEN LEAVE;END;t=2;CALL Timestuff(rest,hours,64799,64800,18,43199,43200,12,21599,21600,6,3599,3600);t=3;CALL Timestuff(rest,mins,2699,2700,45,1799,1800,30,899,900,15,59,60);t=4;CALL Timestuff(rest,secs,44,45,45,29,30,30,14,15,15,0,1);IF months<10 THEN months=0''months;IF days<10 THEN days=0''days;IF hours<10 THEN hours=0''hours;IF mins<10 THEN mins=0''mins;IF secs<10 THEN secs=0''secs;list.entrys.ld= days'.'months'.'year'  'hours':'mins':'secs;IF thismonth THEN;DO;done=0;IF year ~=SUBSTR(DATE('s'),1,4) THEN;DO;entrys=entrys-1;done=1;END;IF ~done THEN IF months ~=SUBSTR(DATE('s'),5,2) THEN entrys=entrys-1;END;END;CALL SEEK(log,58,'c');END;END;END;ELSE SAY 'Unable to open "'filename'"';END;IF ~pread THEN;DO;filename='NComm:NComm.log';IF i THEN filename=infile;IF OPEN(log,filename,'r') THEN;DO;line=READLN(log);IF SUBSTR(line,1,1)='(' THEN list.1.bbsname=SUBSTR(line,1,POS(')',line));ELSE list.1.bbsname=SUBSTR(line,1,POS(' (',line));list.1.bbsnr=SUBSTR(line,POS('(',line)+1,POS(')',line)-POS('(',line)-1);line=READLN(log);line=READLN(log);CALL ExtractDate;list.1.ld=textdate;entrys=entrys+1;IF thismonth THEN;DO;done=0;IF SUBSTR(textdate,7,4) ~=SUBSTR(DATE('s'),1,4) THEN;DO;entrys=entrys-1;done=1;END;IF ~done THEN IF SUBSTR(textdate,4,2) ~=SUBSTR(DATE('s'),5,2) THEN entrys=entrys-1;END;line=READLN(log);line=READLN(log);line=READLN(log);logbug=0;IF C2X(LEFT(line,1)) ~=20 THEN logbug=1;DO FOREVER;IF ~logbug THEN line=READLN(log);IF ~EOF(log) THEN;DO;alike=0;DO n=1 to entrys;doit=0;IF list.n.bbsname=SUBSTR(line,1,POS(' (',line)) THEN doit=1;IF list.n.bbsname=SUBSTR(line,1,POS(')',line)) THEN doit=1;IF doit THEN;DO;list.n.bbsnr=SUBSTR(line,POS('(',line)+1,POS(')',line)-POS('(',line)-1);line=READLN(log);line=READLN(log);CALL ExtractDate;list.n.ld=textdate;line=READLN(log);line=READLN(log);line=READLN(log);logbug=0;IF C2X(LEFT(line,1)) ~=20 THEN logbug=1;alike=1;END;END;IF ~alike THEN;DO;IF SUBSTR(line,1,1)='(' THEN list.n.bbsname=SUBSTR(line,1,POS(')',line));ELSE list.n.bbsname=SUBSTR(line,1,POS(' (',line));list.n.bbsnr=SUBSTR(line,POS('(',line)+1,POS(')',line)-POS('(',line)-1);line=READLN(log);line=READLN(log);too=entrys+1;CALL ExtractDate;list.too.ld=textdate;entrys=entrys+1;IF thismonth THEN;DO;done=0;IF SUBSTR(textdate,7,4) ~=SUBSTR(DATE('s'),1,4) THEN;DO;entrys=entrys-1;done=1;END;IF ~done THEN IF SUBSTR(textdate,4,2) ~=SUBSTR(DATE('s'),5,2) THEN entrys=entrys-1;END;line=READLN(log);line=READLN(log);line=READLN(log);logbug=0;IF C2X(LEFT(line,1)) ~=20 THEN logbug=1;END;END;IF EOF(log) THEN LEAVE;END;CLOSE(log);END;ELSE SAY 'Unable to open "'filename'"';END;IF entrys=0 THEN EXIT;IF width<20 THEN width=20;IF width>40 THEN width=40;DO n=1 TO entrys;IF LENGTH(list.n.bbsname)>width THEN list.n.bbsname=LEFT(list.n.bbsname,20);DO (width+1)-LENGTH(list.n.bbsname);list.n.bbsname=list.n.bbsname||' ';END;END;IF entrys>1&s=1 THEN;DO;DO n=1 TO entrys-1;min=n;DO m=n+1 TO entrys;IF sortmode=1 THEN IF SUBSTR(list.m.ld,7,4)SUBSTR(list.m.ld,4,2)SUBSTR(list.m.ld,1,2)SUBSTR(list.m.ld,13,2)SUBSTR(list.m.ld,16,2)SUBSTR(list.m.ld,19,2)y<SUBSTR(list.min.ld,7,4)SUBSTR(list.min.ld,4,2)SUBSTR(list.min.ld,1,2)SUBSTR(list.min.ld,13,2)SUBSTR(list.min.ld,16,2)SUBSTR(list.min.ld,19,2)y THEN min=m;IF sortmode=2 THEN IF SUBSTR(list.min.ld,7,4)SUBSTR(list.min.ld,4,2)SUBSTR(list.min.ld,1,2)SUBSTR(list.min.ld,13,2)SUBSTR(list.min.ld,16,2)SUBSTR(list.min.ld,19,2)y<SUBSTR(list.m.ld,7,4)SUBSTR(list.m.ld,4,2)SUBSTR(list.m.ld,1,2)SUBSTR(list.m.ld,13,2)SUBSTR(list.m.ld,16,2)SUBSTR(list.m.ld,19,2)y THEN min=m;IF sortmode=3 THEN;DO;IF UPPER(LEFT(list.m.bbsname,4))='THE ' THEN;a=SUBSTR(list.m.bbsname,5,LENGTH(list.m.bbsname)-4);ELSE a=list.m.bbsname;IF UPPER(LEFT(list.min.bbsname,4))='THE ' THEN;b=SUBSTR(list.min.bbsname,5,LENGTH(list.min.bbsname)-4);ELSE b=list.min.bbsname;IF UPPER(a)<UPPER(b) THEN min=m;END;END;buf=list.n.bbsname;list.n.bbsname=list.min.bbsname;list.min.bbsname=buf;buf=list.n.bbsnr;list.n.bbsnr=list.min.bbsnr;list.min.bbsnr=buf;buf=list.n.ld;list.n.ld=list.min.ld;list.min.ld=buf;END;END;IF f THEN;DO;DO n=1 TO entrys;IF notime THEN list.n.ld=SUBSTR(list.n.ld,1,10);WRITELN(out,list.n.bbsname list.n.ld||'  '||list.n.bbsnr);END;CLOSE(out);END;ELSE;DO n=1 TO entrys;IF notime THEN list.n.ld=SUBSTR(list.n.ld,1,10);SAY list.n.bbsname list.n.ld||'  '||list.n.bbsnr;END;EXIT;Timestuff:;PARSE ARG rest,type,an1,an2,an3,bn1,bn2,bn3,cn1,cn2,cn3, dn1, dn2;IF t=1&rest<604800 THEN type=type-1;IF rest>an1 THEN;DO;rest=rest-an2;type=type+an3;END;IF rest>bn1 THEN;DO;rest=rest-bn2;type=type+bn3;END;IF rest>cn1 THEN;DO;rest=rest-cn2;type=type+cn3;END;IF rest> dn1 THEN;DO FOREVER;IF rest> dn1 THEN;DO;rest=rest- dn2;type=type+1;END;IF rest<= dn1 THEN LEAVE;END;IF t=1 THEN days=type;IF t=2 THEN hours=type;IF t=3 THEN mins=type;IF t=4 THEN secs=type;RETURN;ExtractDate:;DO y=1 TO 12;IF SUBSTR(line,13,3)=cd.y.wrd THEN textdate=SUBSTR(line,17,2)'.'cd.y.num'.'SUBSTR(line,29,4) '' SUBSTR(line,20,8);END;RETURN